package com.quique.pfc.utils.adapters;

import java.net.URL;
import java.util.ArrayList;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.quique.pfc.R;
import com.quique.pfc.activities.PrincipalActivity;
import com.quique.pfc.datos.MoodleDao;
import com.quique.pfc.datos.Sesion;
import com.quique.pfc.dtos.CuentaDto;
import com.quique.pfc.dtos.TokenDto;

/** Adaptador que se encargara de rellenar los elementos de una lista con el detalle
 * de las cuentas de usuario registradas en la aplicacion */
public class CuentaAdapter extends ArrayAdapter<CuentaDto> 
{
	/** Array de cuentas de usuario en la BBDD (calculada previamente en el Activity) */
	private ArrayList<CuentaDto> items;
	/** Contexto de la aplicacion */
	private Context ctx;
	/** Cuenta de usuario sobre la que estamos iterando */
	private CuentaDto usuario; 
	
	
	/** Constructor por defecto para los adapters. Recibe el contexto de la aplicacion
	 * y una lista con los elementos que tiene que pintar en pantalla */
	public CuentaAdapter(Context context, int textViewResourceId, ArrayList<CuentaDto> items) 
	{
        super(context, textViewResourceId, items);
        this.items = items;
        ctx = context;
	}
	
	/** Se llamara a este metodo por cada cuenta de usuario que haya que rellenar
	 * en la lista */
	@Override
    public View getView(int position, View convertView, ViewGroup parent) 
	{
            View v = convertView;
            
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.cuenta_item, null);
            }
            //Obtenemos la cuenta
            CuentaDto o = items.get(position);
            usuario = o;
            if (o != null) 
            {
            	
                    TextView tt = (TextView) v.findViewById(R.id.nombre_usu_cuenta);
                    if (tt != null) 
                    {
                          tt.setText(o.usuario);                            
                    }
                    //Obtengo la imagen de la flecha para darle comportamiento
                    ImageView acceder = (ImageView)v.findViewById(R.id.acceso_cuenta);
                    acceder.setClickable(true);
//                    acceder.setOnClickListener(new OnClickListener(){
//	                        @Override
//	                        public void onClick(View v) 
//	                        {
//	                        	CuentaDto usrtmp = usuario;
//	                        	Log.i("moodle", "Se accede con una cuenta almacenada");
//	                        	login(usrtmp);
//	                        }
//                       });
                    ImageView iv = (ImageView)v.findViewById(R.id.miniatura_usuario);
                    String urlstr = o.imagen;
                    if(urlstr == null || "".equals(urlstr))
                    {
                    	//Si no tiene imagen, le ponemos la imagen por defecto de usuario moodle
                    	urlstr = "http://demo.moodle.net/theme/image.php?theme=standard&image=u%2Ff1";
                    }
                    try
                    {
            	        URL url = new URL(urlstr);
            	        Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            	        //metodo para redondear los bordes de una imagen
            	        //bmp = ImageUtils.getRoundedCornerBitmap(bmp);
            	        iv.setImageBitmap(bmp);
                    }
                    catch(Exception e)
                    {
                    	Log.e("moodle", "Error al cargar la imagen del usuario");
                    }
            }
            return v;
    }
}